package com.GraduationDesign.backend.data.codeReview;

import com.GraduationDesign.backend.enums.ResultStatus;
import com.GraduationDesign.backend.enums.ReviewStatus;
import com.GraduationDesign.backend.po.Review;
import com.GraduationDesign.backend.po.Reviewer;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author: wzx
 * @date: 2022/3/6
 */
@Mapper
@Repository
public interface ReviewMapper {
    /**
     * 添加评审
     * @param review :评审
     */
    void addReview(Review review);


    /**
     * 删除评审
     * @param reviewId 评审对应id
     */
    void deleteReview(Integer reviewId);

    /**
     * 获取对应评审
     * @param reviewId 评审对应id
     * @return 评审
     */
    Review getReview(@Param("reviewId") Integer reviewId);

    /**
     * 更新评审
     * @param id 对应id
     * @param content  评审内容
     * @param resultStatus 评审结果
     */
    void updateReview(@Param("reviewId") Integer id, @Param("content") String content, @Param("result")ResultStatus resultStatus, @Param("status")ReviewStatus reviewStatus);

    /**
     * 获得评审列表
     * @param id userId
     * @return 评审列表
     */
    List<Review> getCoderReviews(@Param(("userId")) Integer id);

    /**
     * 获得评审列表
     * @param id userId
     * @return 评审列表
     */
    List<Review> getReviewerReviews(@Param(("userId")) Integer id);

    /**
     * 获得评审人列表
     * @return 评审人列表
     */
    List<Reviewer> getReviewerList();

    /**
     * 获得评审者姓名
     * @param reviewId 评审列表
     * @return 获取评审者姓名
     */
    Integer getReviewerId(@Param("reviewId") Integer reviewId);

    /**
     * 通过项目ID获取评审列表
     * @param programId 项目id
     * @return 评审列表
     */
    List<Review> getReviewListByProgramId(@Param("programId") Integer programId);
    /**
     * 更新评审状态
     * @param reviewId 评审id
     * @param reviewStatus 评审状态
     */
    void updateReviewStatus(@Param("reviewId") Integer reviewId,@Param("status") ReviewStatus reviewStatus);



}
